}
static void
-on_wm_class_changed (MetaWindow *window,
- GParamSpec *pspec,
- gpointer user_data)
+tracked_window_changed (ShellWindowTracker *self,
+ MetaWindow *window)
{
- ShellWindowTracker *self = SHELL_WINDOW_TRACKER (user_data);
-
/* It's simplest to just treat this as a remove + add. */
disassociate_window (self, window);
track_window (self, window);
update_focus_app (self);
}
+static void
+on_wm_class_changed (MetaWindow *window,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ ShellWindowTracker *self = SHELL_WINDOW_TRACKER (user_data);
+ tracked_window_changed (self, window);
+}
+
+static void
+on_gtk_application_id_changed (MetaWindow *window,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ ShellWindowTracker *self = SHELL_WINDOW_TRACKER (user_data);
+ tracked_window_changed (self, window);
+}
+
static void
track_window (ShellWindowTracker *self,
MetaWindow *window)
g_hash_table_insert (self->window_to_app, window, app);
g_signal_connect (window, "notify::wm-class", G_CALLBACK (on_wm_class_changed), self);
+ g_signal_connect (window, "notify::gtk-application-id", G_CALLBACK (on_gtk_application_id_changed), self);
_shell_app_add_window (app, window);
_shell_app_remove_window (app, window);
g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_wm_class_changed), self);
+ g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_gtk_application_id_changed), self);
g_signal_emit (self, signals[TRACKED_WINDOWS_CHANGED], 0);